package cn.song.freight.mapper;

import cn.song.freight.domain.entity.PricingAreaMappingDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 定价区域映射表Mapper接口
 * 
 * @author SongRenShuo
 * @version 3.0.0
 * @since 2025-08-25
 */
@Mapper
public interface PricingAreaMappingMapper extends BaseMapper<PricingAreaMappingDO> {

    /**
     * 批量插入定价区域映射
     * @param mappings 映射列表
     * @return 插入行数
     */
    int batchInsert(@Param("mappings") List<PricingAreaMappingDO> mappings);

    /**
     * 根据定价配置ID删除映射
     * @param pricingId 定价配置ID
     * @return 删除行数
     */
    int deleteByPricingId(@Param("pricingId") Long pricingId);

    /**
     * 根据区域ID删除映射
     * @param areaId 区域ID
     * @return 删除行数
     */
    int deleteByAreaId(@Param("areaId") Long areaId);

    /**
     * 根据定价配置ID查询关联的区域ID列表
     * @param pricingId 定价配置ID
     * @return 区域ID列表
     */
    List<Long> selectAreaIdsByPricingId(@Param("pricingId") Long pricingId);

    /**
     * 根据区域ID查询关联的定价配置ID列表
     * @param areaId 区域ID
     * @return 定价配置ID列表
     */
    List<Long> selectPricingIdsByAreaId(@Param("areaId") Long areaId);

    /**
     * 批量删除定价区域映射
     * @param pricingId 定价配置ID
     * @param areaIds 区域ID列表
     * @return 删除行数
     */
    int batchDeleteByPricingIdAndAreaIds(@Param("pricingId") Long pricingId, @Param("areaIds") List<Long> areaIds);
}